R para Ciencia de Datos en Salud:
Análisis Descriptivo e Inferencia Estadística
Percy Soto-Becerra M.D., M.Sc(c)
InkaStats Data Science Solutions | Medical Branch
@github/psotob91
“The simple graph has brought more information to the data analyst’s mind than any other device.” — John Tukey
La visualización de datos es la creación y el estudio de la representación visual de los datos.
Muchas herramientas para visualizar datos, R es una de ellas.
Muchos enfoques/sistemas dentro de R para hacer visualizaciones de datos
ggplot2 es el paquete de visualización de datos de tidyverse.
gg en ggplot2 significa Gramática de gráficos.
Inspirado en el libro Grammar of Graphics de Leland Wilkinson
country year infant_mortality life_expectancy fertility
1 Albania 1960 115.40 62.87 6.19
2 Algeria 1960 148.20 47.50 7.65
3 Angola 1960 208.00 35.98 7.32
4 Antigua and Barbuda 1960 NA 62.97 4.43
5 Argentina 1960 59.87 65.39 3.11
6 Armenia 1960 NA 66.86 4.55
population gdp continent region
1 1636054 NA Europe Southern Europe
2 11124892 13828152297 Africa Northern Africa
3 5270844 NA Africa Middle Africa
4 54681 NA Americas Caribbean
5 20619075 108322326649 Americas South America
6 1867396 NA Asia Western Asia
Inicia con el data.frame gapminder
Inicia con el data.frame gapminder, mapea year a x
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo”
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”. Etiqueta los ejes x e y como “Año” y “Esperanza de Vida”, respectivamente
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”. Etiqueta los ejes x e y como “Año” y “Esperanza de Vida”, respectivamente. Etiqueta la leyenda como “Continentes”
Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”. Etiqueta los ejes x e y como “Año” y “Esperanza de Vida”, respectivamente. Etiqueta la leyenda como “Continentes” y agrega un titulo para la fuente de datos
ggplot(data = gapminder,
mapping = aes(x = year,
y = life_expectancy,
colour = continent)) +
geom_point() +
labs(title = "Esperanza de vida a lo largo del tiempo",
subtitle = "Datos para Africa, Americas, Asia, Europa y Oceania",
x = "Año", y = "Esperanza de Vida",
colour = "Continentes",
caption = "Fuente: Gapminder data")Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y. Representa cada información con un punto. Mapea continent al color de los puntos. Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”. Etiqueta los ejes x e y como “Año” y “Esperanza de Vida”, respectivamente. Etiqueta la leyenda como “Continentes” y agrega un titulo para la fuente de datos. Finalmente, usa una escala de colores discreta que esté diseñada para preservar la visualización de personas con formas comunes discapacidad visual para los colores
ggplot(data = gapminder,
mapping = aes(x = year,
y = life_expectancy,
colour = continent)) +
geom_point() +
labs(title = "Esperanza de vida a lo largo del tiempo",
subtitle = "Datos para Africa, Americas, Asia, Europa y Oceania",
x = "Año", y = "Esperanza de Vida",
colour = "Continentes",
caption = "Fuente: Gapminder data") +
scale_colour_viridis_d()ggplot(data = gapminder,
mapping = aes(x = year,
y = life_expectancy,
colour = continent)) +
geom_point() +
labs(title = "Esperanza de vida a lo largo del tiempo",
subtitle = "Datos para Africa, Americas, Asia, Europa y Oceania",
x = "Año", y = "Esperanza de Vida",
colour = "Continentes",
caption = "Fuente: Gapminder data") +
scale_colour_viridis_d()Inicia con el data.frame gapminder, mapea year a x y mapea life_expectancy a y.
Representa cada información con un punto.
Mapea continent al color de los puntos.
Titula el gráfico como “Esperanza de vida a lo largo del tiempo” y agrega el subtitulo “Datos para Africa, Americas, Asia, Europa y Oceania”.
Etiqueta los ejes x e y como “Año” y “Esperanza de Vida”, respectivamente.
Etiqueta la leyenda como “Continentes” y agrega un titulo para la fuente de datos.
Finalmente, usa una escala de colores discreta que esté diseñada para preservar la visualización de personas con formas comunes discapacidad visual para los colores.
Se puede omitir los nombres de los dos primeros argumentos cuando construimos gráficos con ggplot2.
Se puede realizar transformaciones sobre la marcha de las variables en los gráficos de ggplot2
ggplot(data = gapminder,
mapping = aes(x = gdp,
y = life_expectancy,
colour = continent)) +
geom_point() +
labs(title = "PBI y esperanza de vida",
subtitle = "Datos para Africa, Americas, Asia, Europa y Oceania",
x = "Producto Bruto Interno",
y = "Esperanza de Vida",
colour = "Continentes",
caption = "Fuente: Gapminder data") +
scale_colour_viridis_d()ggplot(data = gapminder,
mapping = aes(x = log(gdp), #< Ponemos log()
y = life_expectancy,
colour = continent)) +
geom_point() +
labs(title = "PBI y esperanza de vida",
subtitle = "Datos para Africa, Americas, Asia, Europa y Oceania",
x = "Logaritmo de Producto Bruto Interno", #< Editamos nombre
y = "Esperanza de Vida",
colour = "Continentes",
caption = "Fuente: Gapminder data") +
scale_colour_viridis_d()Cree una carpeta y configure un proyecto denominado: mi_primer_ggplot. Cree un documento quarto y denominelo: "mi_primer_ggplot.qmd". Importe los datos maca_meno_fase1.dta, los cuales se pueden descargar del siguiente enlace: maca_meno_fase1.dta. Tip: Use, esta vez, la función read_stata del paquete {haven} que ya viene instalado con {tidyverse}.
Cree un gráfico de dispersión de puntos que relacione el peso (variable weight, en el eje x) con la hormona foliculo estimulante (variable fsh, en el eje y).
Cree otro gráfico que relacione estradiol (e2 como y) con tratamiento recibido (treat como x). Use gráfico de puntos. Tip: use geomtría geom_point().
Guarde este gráfico como un objeto, pongale de nombre: plot1. Tip: Use operador asignar <-. Imprima plot1.
Agregue una geometría de gráfico de cajas. Tip: Agregue geom_boxplot().
Invierta el orden de las geometrías. Primero ponga geom_boxplot() y luego ponga geom_point(). Compare con el gráfico anterior. ¿En qué se diferencian?
05:00
Las características comunmente usadas en los gráficos que pueden ser mapeadas a variables específicas en los datos:
color
forma
tamaño
alfa (transparencia)
Mapeo: Determina el tamaño, alfa, etc. de los puntos basados en el valor de un variable en los datos:
Conocido en inglés como mapping.
Se configura como: aes()
Configuración: Determina el tamaño, alfa, etc. de los puntos SIN basarse en el valor de un variable en los datos:
Conocido en inglés como setting.
Se configura como: geom_* (en este caso fue geom_point, pero hay otras geometrías más)
Se puede dividir la imagen en varias subimágenes de acuerdo a alguna otra condición.
Muy útil cuando se tienen grandes de datos y es de interés mostrar sus relaciones con varias variables.
{ggplot2} ofrece una serie de temas predinidos.
Un tema predefinido es una configuración pre-definida de componentes no dependientes de los datos (títulos, etiquetas, fuentes, fondo, grilas, leyendas, etc.) que pueden ser usados para darle un aspecto consistente a los gráficos.
Más info sobre los temas completas pre-definidos se pueden encontra en el siguiente enlace: Ver aquí.
Uno también puede personalizar sus propios temas: Ver aquí.
theme_gray (por defecto)
theme_bw()
theme_linedraw()
theme_light()
theme_dark()
theme_minimal()
theme_classic()
theme_void()
theme_test()
En el mismo proyecto y carpeta, cree un nuevo documento de quarto y llámelo "mi_segundo_ggplot.qmd". Importe la base de datos maca_meno_fase1.dta. Cree un gráfico de dispersión de puntos que relacione el peso (variable weight, en el eje x) con la hormona foliculo estimulante (variable fsh, e el eje y). Tip: Puede reutilizar el código usado en el ejercicio anterior.
Cree otro gráfico que también diferencie los grupos de tratamiento (variable treat) mediante colores diferentes. Tip: mapee colour con treat.
Cree otro gráfico que taambién diferencie el tiempo de medición (variable time) con formas diferentes. Tip: mapee shape con time.
Reutilizando el código anterior, configure la transparencie en 0.5. Tip: configure el alpha dentro de la geometría.
Aplique una transformación logarítmica a la variable fsh. Tipo: Aplique log() directamente sobre la variable fsh dentro del chunk de código ya elaborado.
Divida en facetas los gráficos: 1) Una faceta para cada tratamiento; y 2) Una faceta para tratamiento – tiempo. Tip: Use facet__wrap() y facet_grid().
Utilice el tema completo theme_bw().
05:00
Introducción a R y RStudio